//
//  FYFMessageToolbar.h
//  
//
//  Created by fuyoufang on 15/10/19.
//
//

#import <UIKit/UIKit.h>

#import "XHMessageTextView.h"
#import "DXChatBarMoreView.h"
#import "ESFacialInputView.h"
#import "DXRecordView.h"

#define kTouchToRecord NSLocalizedString(@"message.toolBar.record.touch", @"hold down to talk")
#define kTouchToFinish NSLocalizedString(@"message.toolBar.record.send", @"loosen to send")

@protocol FYFMessageToolbarDelegate;

@interface FYFMessageToolbar : UIView

@property (nonatomic, weak) id <FYFMessageToolbarDelegate> delegate;

/**
 *  文字输入区域最大高度，必须 > KInputTextViewMinHeight(最小高度)并且 < KInputTextViewMaxHeight，否则设置无效
 */
@property (nonatomic) CGFloat maxTextInputViewHeight;

/**
 *  初始化方法
 *
 *  @param frame      位置及大小
 *
 *  @return FYFMessageToolbarDelegate
 */
- (instancetype)initWithFrame:(CGRect)frame;

/**
 *  默认高度
 *
 *  @return 默认高度
 */
+ (CGFloat)defaultHeight;

/**
 *  取消触摸录音键
 */
- (void)cancelTouchRecord;

@end

#pragma mark - FYFMessageToolbarDelegate

@protocol FYFMessageToolbarDelegate <NSObject>

@optional

#pragma mark - 文字输入框
/**
 *  文字输入框开始编辑
 *
 *  @param inputTextView 输入框对象
 */
- (void)messageToolBar:(FYFMessageToolbar *)messageToolBar inputTextViewWillBeginEditing:(UITextView *)textField;

/**
 *  文字输入框将要开始编辑
 *
 *  @param inputTextView 输入框对象
 */
- (void)messageToolBar:(FYFMessageToolbar *)messageToolBar inputTextViewDidBeginEditing:(UITextView *)textField;
/**
 *  发送文字消息，可能包含系统自带表情
 *
 *  @param text 文字消息
 */
- (void)messageToolBar:(FYFMessageToolbar *)messageToolBar didSendText:(NSString *)text;

#warning TODO 还有表情是直接发送的
/**
 *  发送第三方表情，不会添加到文字输入框中
 *
 *  @param faceLocalPath 选中的表情的本地路径
 */
- (void)didSendFace:(NSString *)faceLocalPath;

/**
 *  按下录音按钮开始录音
 */
- (void)didStartRecordingVoiceAction:(UIView *)recordView;

/**
 *  手指向上滑动取消录音
 */
- (void)didCancelRecordingVoiceAction:(UIView *)recordView;

/**
 *  松开手指完成录音
 */
- (void)didFinishRecoingVoiceAction:(UIView *)recordView;

/**
 *  当手指离开按钮的范围内时，主要为了通知外部的HUD
 */
- (void)didDragOutsideAction:(UIView *)recordView;

/**
 *  当手指再次进入按钮的范围内时，主要也是为了通知外部的HUD
 */
- (void)didDragInsideAction:(UIView *)recordView;

@required
/**
 *  高度变到toHeight
 */
- (void)messageToolbar:(DXMessageToolBar *)toolbar shouldChangeFrameToHeight:(CGFloat)toHeight;
/**
 *  距离父控件底部的间距
 */
- (void)messageToolbar:(DXMessageToolBar *)toolbar shouldChangeFrameToBottom:(CGFloat)toBottom;
@end

